package com.erlang.jpa.dao;

import com.erlang.jpa.pojo.Customer;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;

import java.util.List;

/**
 * JpaRepository<实体类类型，主键类型>：用来完成基本CRUD操作
 * JpaSpecificationExecutor<实体类类型>：用于复杂查询（分页等查询操作）
 */
public interface CustomerDao extends JpaRepository<Customer, Long>, JpaSpecificationExecutor<Customer> {

  //@Query 使用jpql的方式查询。
  @Query(value="from Customer")
  List<Customer> findAllCustomer();

  //@Query 使用jpql的方式查询。?1代表参数的占位符，其中1对应方法中的参数索引
  @Query(value="from Customer where custName = ?1")
  Customer findCustomer(String custName);

  // 更新操作
  @Query(value="update Customer set custName = ?1 where custId = ?2")
  @Modifying
  void updateCustomer(String custName,Long custId);

   //nativeQuery : 使用本地sql的方式查询
  @Query(value="select * from cst_customer",nativeQuery=true)
  List<Customer> findSql();
}